home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 2
/
NetNews Offline Volume 2.iso
/
news
/
comp
/
std
/
c
/
538
< prev
next >
Wrap
Text File
|
1996-08-06
|
3KB
|
70 lines
Path: gabi-soft.fr!usenet
From: kanze@gabi-soft.fr (J. Kanze)
Newsgroups: comp.std.c
Subject: Re: Multibyte and wide-character support
Date: 07 Mar 1996 12:58:46 GMT
Organization: GABI Software, Sarl.
Message-ID: <KANZE.96Mar7135846@gabi.gabi-soft.fr>
References: <4he9gg$m9l@pentagon.io.com>
NNTP-Posting-Host: gabi.gabi-soft.fr
In-reply-to: jamshid@io.com's message of 4 Mar 1996 02:26:56 -0600
In article <4he9gg$m9l@pentagon.io.com> jamshid@io.com (Jamshid Afshar)
writes:
|> Is there an easy way to test if a multibyte string contains only
|> singlebyte characters and thus can be passed to a function expecting a
|> "regular" char*? Is "if (strlen(mbs)==mblen(mbs))" a valid test and
|> is there anything better?
"if ( strlen( mbs ) == mblen( mbs ) )" is definitly wrong. mblen
returns the number of byte in a (single) multi-byte character, not in
the string. About the only way I can think of doing this is by brute
force, with a loop:
bool isMultibyte = false ;
while ( ! isMultibyte && *mbs != '\0' )
{
int n = mblen( mbs , -1 ) ;
isMultibyte = (n > 1) ;
mbs += n ;
}
|> Why aren't there wchar_t versions of functions like atoi() strtod()?
|> Do they just have to be converted to multibyte strings, and do atoi(),
|> etc. work with multibyte strings?
According to the standard: ``In other that the "C" locale, additional
implementation-defined subject sequence forms may be accepted.'' In
plain English: the implementor is allowed to support them, but not
required to.
|> Btw, VC++4's docs say that if mbstowcs()'s wchar_t* destination
|> argument is NULL then the function doesn't do a conversion of the
|> multibyte string; it just returns the size needed to store the
|> multibyte string. Accepting a NULL first argument is not required by
|> Standard C, is it?
No mention of it in my copy of the standard.
|> Also, the VC++4 docs seem to indicate fputws(), a
|> wchar_t version of fputs(), is "ANSI" compatible. Standard C doesn't
|> actually specify any wide-character i/o functions, does it?
There not in the index, anyway.
The actual support for internationalization in C is very weak. The only
justification for this is that when the C standard was adopted, such
support was totally lacking in all other languages; C was a definite
inovater in this respect.
I believe that there are a number of additional functions which have
been proposed for C9x. Maybe one of the other readers can fill us in.
You might also want to check out http://www.dmk.com/dmk/index.html,
which is where all of the proposals are archived.
--
James Kanze (+33) 88 14 49 00 email: kanze@gabi-soft.fr
GABI Software, Sarl., 8 rue des Francs Bourgeois, 67000 Strasbourg, France
Conseils, Θtudes et rΘalisations en logiciel orientΘ objet --
-- A la recherche d'une activitΘ dans une region francophone